package com.hera.base.util;

import java.io.Serializable;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.lang.StringUtils;

public class ParametroDTO implements Serializable{

	private static final long serialVersionUID = 1L;
	public final static Integer ORDEN_DESCENDENTE=1;
	public final static Integer ORDEN_ASCENDENTE=2;
	
	public final static Integer TIPO_IGUAL=1;
	public final static Integer TIPO_LIKE=2;
	
	private Integer nroOrden;
	private Integer ordenamiento;
	private Integer tipoParametro;
	private String nombreParametro;
	private Object valorParametro;
	private Class tipoDato;
	
	public ParametroDTO(String nombreParametro) {
		this.nombreParametro=nombreParametro;
	}
	public ParametroDTO() {
		this(null);
	}
	
	
	
	public Integer getNroOrden() {
		return nroOrden;
	}
	public void setNroOrden(Integer nroOrden) {
		this.nroOrden = nroOrden;
	}
	public Integer getOrdenamiento() {
		return ordenamiento;
	}
	public void setOrdenamiento(Integer ordenamiento) {
		this.ordenamiento = ordenamiento;
	}
	public String getNombreParametro() {
		return nombreParametro;
	}
	public void setNombreParametro(String nombreParametro) {
		this.nombreParametro = nombreParametro;
	}
	public Object getValorParametro() {
		if(valorParametro==null) return null;
		return ConvertUtils.convert(valorParametro, tipoDato);
	}
	public void setValorParametro(Object valorParametro) {
		this.valorParametro = valorParametro;
	}
	public Integer getTipoParametro() {
		return tipoParametro;
	}
	public void setTipoParametro(Integer tipoParametro) {
		this.tipoParametro = tipoParametro;
	}
	public Class getTipoDato() {
		return tipoDato;
	}
	public void setTipoDato(Class tipoDato) {
		this.tipoDato = tipoDato;
	}
	@Override
	public boolean equals(Object obj) {
		if(obj==null)return false;
		ParametroDTO parametroDTO=(ParametroDTO)obj;
		return StringUtils.equals(nombreParametro, parametroDTO.getNombreParametro());
	}
	
	@Override
	public String toString() {
		return "{" +
				"nroOrden		:" +nroOrden+"\n"+
				"ordenamiento	:" +ordenamiento+"\n"+
				"tipoParametro	:" +tipoParametro+"\n"+
				"nombreParametro:" +nombreParametro+"\n"+
				"valorParametro	:" +valorParametro+"\n"+
				"tipoDato		:" +tipoDato+"\n"+
				"}";
	}
	
}